home *** CD-ROM | disk | FTP | other *** search
/ Libris Britannia 4 / science library(b).zip / science library(b) / DJGPP / QDDVX102.ZIP / contrib / dvx / inc / sys / socket.h < prev    next >
Text File  |  1993-07-15  |  5KB  |  187 lines

  1. /*
  2.  * DESQview/X Socket Library. 
  3.  * Copyright (c) Quarterdeck Office Systems 1991,1992,1993.
  4.  */
  5.  
  6. /*
  7.  * Copyright (c) 1983 Regents of the University of California.
  8.  * All rights reserved.  The Berkeley software License Agreement
  9.  * specifies the terms and conditions for redistribution.
  10.  */
  11.  
  12. /*      @(#)socket.h    */
  13.  
  14. /*
  15.  * Definitions related to sockets: types, address families, options.
  16.  */
  17.  
  18. #ifndef __SYS_SOCKET_H__
  19. #define __SYS_SOCKET_H__
  20.  
  21. #include <sys\time.h> /* for timeval */
  22.  
  23. /* Socket Types */
  24. #define SOCK_STREAM     1               /* TCP */
  25. #define SOCK_DGRAM      2               /* UDP */
  26. #define SOCK_RAW        3               /* direct protocol interface */
  27.  
  28. /* Socket Options */
  29. #define SO_DEBUG        0x01    /* record debugging info */
  30. #define SO_ACCEPTCONN   0x02    /* socket is listen()ing */
  31. #define SO_REUSEADDR    0x04    /* allow local address to be reused */
  32. #define SO_KEEPALIVE    0x08    /* keep connections alive */
  33. #define SO_DONTROUTE    0x10
  34. #define SO_BROADCAST    0x20
  35. #define SO_DONTLINGER   0x40    /* 4.2 compatible */
  36. #define SO_LINGER       0x80
  37.  
  38. #define SO_SNDBUF       0x1001
  39. #define SO_RCVBUF       0x1002
  40. #define SO_SNDLOWAT     0x1003
  41. #define SO_RCVLOWAT     0x1004
  42. #define SO_SNDTIMEO     0x1005
  43. #define SO_RCVTIMEO     0x1006
  44.  
  45. #define MSG_OOB         0x01
  46. #define MSG_PEEK        0x02
  47. #define MSG_DONTROUTE   0x04
  48.  
  49. /* Address Families */
  50. #define AF_UNSPEC       0
  51. #define AF_UNIX         1
  52. #define AF_INET         2               /* Internet Protocols */
  53. #define AF_IMPLINK      3
  54. #define AF_PUP          4
  55. #define AF_DECnet       12              /* DECnet */
  56.  
  57. /* Protocol Families */
  58. #define PF_UNSPEC       AF_UNSPEC
  59. #define PF_UNIX         AF_UNIX
  60. #define PF_INET         AF_INET
  61. #define PF_IMPLINK      AF_IMPLINK      /* Internet Protocols */
  62. #define PF_PUP          AF_PUP
  63.  
  64. /* setsocketopt */
  65. #define TCP_NODELAY    0x01
  66.  
  67. struct sockaddr {
  68.         unsigned short    sa_family;
  69.         char        sa_data[14];
  70. };
  71.  
  72. #if !defined(__GNUC__) && !defined(__SALFORD__)
  73. #define bcopy(a,b,c)        memcpy(b,a,c)
  74. #define bcmp(a,b,c)         memcmp(a,b,c)
  75. #define bzero(a,b)          memset(a,0,b)
  76. #endif
  77.  
  78. #define NUMSOCKS 32
  79.  
  80. /*
  81.  * Level number for (get/set)sockopt() to apply to socket itself.
  82.  */
  83. #define SOL_SOCKET      0xffff          /* options for socket level */
  84.  
  85.  
  86. #define NBBY    8               /* number of bits in a byte */
  87.  
  88. #ifndef FD_SETSIZE
  89. /*
  90.  * Select uses bit masks of file descriptors in longs.
  91.  * These macros manipulate such bit fields (the filesystem macros use chars).
  92.  * FD_SETSIZE may be defined by the user, but the default here
  93.  * should be >= NOFILE (param.h).
  94.  */
  95. #define FD_SETSIZE      32 /* sun/wollongong are 16,ftp is 20,novell is 128 */
  96.  
  97. typedef long    fd_mask;
  98. #define NFDBITS (sizeof (fd_mask) * NBBY)       /* bits per mask */
  99. #ifndef howmany
  100. #define howmany(x, y)   (((x)+((y)-1))/(y))
  101. #endif
  102.  
  103. typedef struct fd_set {
  104.         fd_mask fds_bits[howmany(FD_SETSIZE, NFDBITS)];
  105. } fd_set;
  106.  
  107. #define FD_SET(n, p)    ((p)->fds_bits[(n)/NFDBITS] |= (1UL << ((n) % NFDBITS)))
  108. #define FD_CLR(n, p)    ((p)->fds_bits[(n)/NFDBITS] &= ~(1UL << ((n) % NFDBITS)))
  109. #define FD_ISSET(n, p)  ((p)->fds_bits[(n)/NFDBITS] & (1UL << ((n) % NFDBITS)))
  110. #define FD_ZERO(p)      memset((char *)(p), 0, sizeof (*(p)))
  111.  
  112. #endif
  113.  
  114. #ifndef NO_PROTO
  115.  
  116. /* bsd43 c functions */
  117.  
  118.   int  accept(int, struct sockaddr  *, int  *);
  119.   int  bind(int, struct sockaddr  *, int);
  120.   int  so_close(int );
  121.   int  connect(int, struct sockaddr  *, int );
  122.   int  gethostname(char *, int);
  123.   int  getpeername(int, struct sockaddr  *, int  *);
  124.   int  getsockname(int, struct sockaddr  *, int  *);
  125.   int  getsockopt(int, int, int, char  *, int  *);
  126.   int  ioctl(int, int, long *);
  127.   int  issock(int );
  128.   int  listen(int, int );
  129.   int  recv(int, char  *, int, int );
  130.   int  recvfrom(int, char  *, int, int, struct sockaddr  *, int  *);
  131.   int  select(int, struct fd_set *, struct fd_set *, struct fd_set *, struct timeval *);
  132.   int  send(int, char  *, int, int);
  133.   int  sendto(int, char  *, int, int, struct sockaddr *, int);
  134.   int  setsockopt(int, int, int, char *, int);
  135.   int  so_attach(unsigned long );
  136.   unsigned long  so_detach(int );
  137.   int  so_close(int );
  138.   void so_fatal(int );
  139.   int  socket(int, int, int);
  140.  
  141.   int  so_linkup(int s);
  142.   int     so_unlink(int s);
  143.   int     so_daemon(char *args[],char wait);
  144.   int  so_initdaemon(char *parmList[],unsigned long *mb);
  145.   void so_setupdaemon(char *name);
  146.   void so_exitdaemon(void);
  147.  
  148. #else /* NO_PROTO */
  149.  
  150. /* bsd43 c functions */
  151.  
  152.   int  accept();
  153.   int  bind();
  154.   int  so_close();
  155.   int  recv();
  156.   int  send();
  157.   int  connect();
  158.   int  gethostname();
  159.   int  getpeername();
  160.   int  getsockname();
  161.   int  getsockopt();
  162.   int  ioctl();
  163.   int  issock();
  164.   int  listen();
  165.   int  recv();
  166.   int  recvfrom();
  167.   int  select();
  168.   int  send();
  169.   int  sendto();
  170.   int  setsockopt();
  171.   int  so_attach();
  172.   unsigned long  so_detach();
  173.   int  so_close();
  174.   void so_fatal();
  175.   int  socket();
  176.  
  177.   int  so_linkup();
  178.   int     so_unlink();
  179.   int     so_daemon();
  180.   int  so_initdaemon();
  181.   void so_setupdaemon();
  182.   void so_exitdaemon();
  183.  
  184. #endif /* NO_PROTO */
  185.  
  186. #endif /* __SYS_SOCKET_H__ */
  187.